package main

import "fmt"

func main() {
	valueTransfer()
	addressTransfer()
}

func valueTransfer() {
	num := 10
	change(num)
	fmt.Println(num)
}

// GO语言中 值类型有 int系列 float系列 bool string 数组 结构体
//值类型通常在栈中分配存储空间
//值类型作为函数参数传递，是拷贝传递
//在函数体内修改值类型参数，不会影响到函数外的值
func change(num int) {
	num = 1000
}

func addressTransfer() {
	num := 10
	change1(&num)
	fmt.Println(num)

}

// GO语言中引用类型有 指针 slice map channel
//	引用类型通常在堆中分配存储空间
//	引用类型作为函数参数传递，是引用传递
//	在函数体内修改引用类型参数，会用想到函数外的值
func change1(num *int) {
	*num = 1000
}
